맨위로가기

스냅! (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

스냅!(Snap!)은 3개의 크기 조절 가능한 열과 5개의 영역으로 구성된 사용자 인터페이스를 가진 시각적 프로그래밍 언어이다. 스크래치와 유사하게 블록을 조립하여 코드를 작성하며, 익명 함수, 일급 객체 리스트, 일급 스프라이트, 하이퍼블록, 메타 프로그래밍 등의 기능을 제공한다. 파이썬, 자바스크립트, C 등 텍스트 기반 언어로 코드 생성이 가능하며, 앨런조 처치의 이름을 딴 마스코트 알론조를 사용한다. 스냅!은 GNU 아페로 일반 공중 사용 허가서(AGPL)를 따르며, 윈도우, iOS, macOS, 리눅스 등 다양한 플랫폼의 웹 브라우저에서 실행된다.

더 읽어볼만한 페이지

  • 스몰토크 프로그래밍 언어 계열 - 스크래치 (프로그래밍 언어)
    스크래치는 MIT 미디어 연구소에서 개발한 어린이 및 입문자를 위한 시각적 프로그래밍 언어이며, 블록 기반 방식을 통해 애니메이션, 게임, 스토리 등을 만들 수 있도록 설계되었고, 코드 공유 및 재사용을 장려하며 다양한 교육 환경에서 활용된다.
  • 스몰토크 프로그래밍 언어 계열 - 스퀵
    앨런 케이와 댄 잉갈스 등이 개발한 스몰토크 기반 프로그래밍 환경인 스퀵은 다이나북 프로젝트의 이상 구현, 자유로운 이식성, 고기능 멀티미디어 처리를 목표로 개발되었으며, 다양한 사용자 인터페이스 프레임워크와 교육용 환경 eToys를 제공하고 MIT 및 아파치 라이선스로 자유롭게 사용 가능하다.
  • 비디오 게임 IDE - 언리얼 엔진
    언리얼 엔진은 에픽게임즈에서 개발한 게임 엔진으로, 게임 개발을 넘어 영화, 건축 등 다양한 분야에서 활용되며, C++ 및 블루프린트 비주얼 스크립팅 시스템을 통해 게임 로직을 구현하고, 최근에는 Verse라는 새로운 스크립트 언어가 도입되었다.
  • 비디오 게임 IDE - 유니티 (게임 엔진)
    유니티는 2005년 출시된 게임 개발 엔진으로, 2D 및 3D 게임 제작, 다양한 플랫폼 지원, C# 스크립팅, 에셋 스토어 등을 제공하며 게임 외 분야에서도 활용된다.
  • 소프트웨어 개발 공동체 - 마이크로소프트 개발자 네트워크
    마이크로소프트 개발자 네트워크(MSDN)는 마이크로소프트가 제공했던 개발자 커뮤니티 사이트 및 유료 구독 서비스였으며, 웹사이트, 라이브러리, 포럼 등을 제공하고 API 문서, 샘플 코드, 기술 자료를 제공했으나, 2020년과 2022년에 일부 서비스가 종료되었다.
  • 소프트웨어 개발 공동체 - 안드로이드 소프트웨어 개발
    안드로이드 소프트웨어 개발은 구글 안드로이드 운영체제용 앱을 개발하는 과정으로, SDK, NDK 등의 도구를 사용하며, USB 하드웨어 연동 지원, 에뮬레이터 제공, 개발자 챌린지 등을 통해 혁신적인 앱 개발을 장려한다.
스냅! (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
기본 정보
이름스냅! (프로그래밍 언어)
원래 이름Snap! (programming language)
종류블록 기반 프로그래밍 언어
스냅! 로고
스냅! 로고
디자인 년도2011년
디자이너브라이언 하비와 옌스 묀히
개발자옌스 묀히
최신 릴리스 버전9.2.17
최신 릴리스 날짜2024년 4월 24일
타이핑동적
구현Morphic.js (자바스크립트로 작성됨)
영향을 받은 언어스크래치
스킴
로고
스몰토크
APL
영향을 준 언어BeetleBlocks
NetsBlox
Dragme IDE
터틀스티치
운영체제크로스 플랫폼
라이선스AGPL
웹사이트snap.berkeley.edu
파일 확장자.xml (Snap!)

2. 사용자 인터페이스

스냅!(Snap!)의 사용자 인터페이스는 크게 세 부분으로 나뉜다. 왼쪽에는 블록 팔레트, 가운데에는 스크립트 영역, 오른쪽에는 스테이지 영역이 있다. 이러한 구성은 사용자가 블록을 쉽게 찾고, 스크립트를 작성하며, 그 결과를 즉시 확인할 수 있도록 돕는다.[1]

스냅!의 IDE 시작 화면. 3개의 크기 조절 가능한 열과 5개의 영역으로 구성되어 있다.


중앙 영역에는 선택한 스프라이트에 연결된 스크립트, 의상/배경, 또는 소리를 표시할 수 있으며, 이는 상단의 탭을 이용해 전환할 수 있다.

2. 1. 화면 구성

스냅!(Snap!)의 화면은 3개의 크기 조절 가능한 열로 구성되어 있으며, 5개의 영역을 포함하고 있다.

  • 블록 그룹 선택기 (왼쪽 열 상단)
  • 블록 팔레트 (왼쪽 열)
  • 주 영역 (가운데 열)
  • 스테이지 영역 (오른쪽 열 상단)
  • 스프라이트 선택기 (스프라이트 우리라고도 함) (스테이지 영역 아래)[1]


대화형으로 크기 조절이 가능한 스테이지 영역에는 스크립트 영역에서 실행되는 스크립트의 그래픽 결과 및/또는 모든 팔레트에서 개별 블록을 더블 클릭하여 상호 작용하는 결과가 표시된다. 개별 블록은 팔레트에서 스크립트 영역으로 드래그하여 선택한 스프라이트에 연결할 수 있다.

스냅!(Snap!)의 블록은 동작, 모양, 소리, 펜, 제어, 감지, 연산자 및 변수의 8개 그룹으로 나뉜다. 블록 그룹 선택기에 이러한 그룹의 레이아웃은 다음과 같다.

카테고리비고카테고리비고
bgcolor="#4A6CD4"|동작스프라이트 이동 및 회전bgcolor="#E1A91A" |제어If 문, 이벤트, 반복 구조, 장면, OOP, 메타프로그래밍
bgcolor="#8A55D7"|모양가시성 제어, 의상 및 출력bgcolor="#2CA5E2"|감지모든 스프라이트 히트 감지 및 사용자 입력
bgcolor="#BB42C3"|소리오디오 파일 재생 및 프로그래밍 가능한 시퀀스 오디오bgcolor="#5CB712"|연산자수학, 텍스트, 그리고 부울 연산자; 람다
bgcolor="#0E9A6C"|스테이지에 쓰기, 그리기, 또는 스탬프 찍기bgcolor="#C88330"|변수변수, 목록, 목록의 목록, 블록 목록 등 포함



중앙 영역은 선택한 스프라이트에 연결된 스크립트, 의상/배경, 또는 소리를 표시할 수 있다. 해당 영역에 표시되는 내용은 선택한 탭에 따라 다르다.

2. 2. 블록 그룹

스냅!(Snap!)의 블록은 동작, 모양, 소리, 펜, 제어, 감지, 연산자, 변수의 8개 그룹으로 나뉜다. 각 블록 그룹의 기능과 특징은 아래 표와 같다.

스냅! 블록 그룹
블록 그룹기능
동작스프라이트 이동 및 회전
모양가시성 제어, 의상 및 출력
소리오디오 파일 재생 및 프로그래밍 가능한 시퀀스 오디오
스테이지에 쓰기, 그리기, 또는 스탬프 찍기
제어If 문, 이벤트, 반복 구조, 장면, OOP, 메타프로그래밍
감지모든 스프라이트 히트 감지 및 사용자 입력
연산자수학, 텍스트, 그리고 부울 연산자; 람다
변수변수, 목록, 목록의 목록, 블록 목록 등 포함


3. 특징

스크래치와 비교했을 때 스냅!(Snap!)은 다음과 같은 주요 기능들을 제공한다:[1]


  • 일급 함수람다 대수에 기반한 익명 함수 표현식
  • 일급 객체인 리스트 (리스트의 리스트)
  • 프로토타입 기반 프로그래밍을 지원하는 일급 스프라이트
  • 입력으로 리스트를 받아 스칼라에 적용하는 "하이퍼블록"
  • 중첩 가능한 스프라이트
  • 파이썬, JavaScript, C 등 텍스트 언어로 코딩화 기능
  • 메타 프로그래밍, 리플렉션 및 매크로 기능

3. 1. 고급 기능

''Snap!''이 Scratch는 제공하지 않는 고급 기능은 다음과 같다.

  • 익명 함수를 사용하는 표현식: 회색 링 내부의 블록으로 표시되며, 하나 이상의 빈 슬롯/인수를 가지며, "고차 함수"(익명 함수를 호출하는 함수)에 의해 채워진다. 이들의 컴퓨터 과학 이론적 기반은 일급 함수이며, 이는 다시 람다 대수를 더욱 추상적이고 수학적인 기반으로 한다.[1]
  • 일급 객체인 리스트 (''리스트의 리스트/배열'')[1]
  • ''일급'' 스프라이트 ( 프로토타입 기반 프로그래밍)[1]
  • "하이퍼블록": 스칼라(텍스트 또는 숫자)가 자연적인 영역인 함수로, 입력으로 리스트를 허용하고 기본 함수를 리스트 또는 하위 리스트의 스칼라에 적용하도록 확장된다.[1]
  • 중첩 가능한 스프라이트[1]
  • ''Snap!'' 프로그램을 파이썬, JavaScript, C 등과 같은 텍스트 언어로 코딩화.[1]
  • 메타 프로그래밍, 리플렉션 및 매크로[1]

3. 2. 코드 생성

스냅!은 파이썬, JavaScript, C 등과 같은 텍스트 언어로 코딩할 수 있는 기능을 제공한다.[1]

3. 3. 메타 프로그래밍

메타 프로그래밍, 리플렉션 및 매크로 기능을 제공한다.[1]

4. 마스코트



스냅!의 마스코트인 알론조는 앨런조 처치의 이름을 따서 지어졌다. 앨런조 처치는 람다로 표현되는 보편적인 함수가 다양한 조합으로 자체를 호출하여 모든 함수 동작을 생성할 수 있는 계산 모델을 발명했다. 이 마스코트는 스크래치 팀의 허가를 받아 스크래치의 고보(Gobo)를 수정하여 제작되었다. 앨런조 처치의 연구를 람다 대수라고 부르기 때문에, 마스코트의 머리카락은 그리스 문자 람다 모양을 하고 있다.

5. 특수 목적 블록 (라이브러리)

스냅!(프로그래밍 언어) 라이브러리에서는 확장된 블록 집합을 찾을 수 있다. 예를 들어, '스트림' 라이브러리는 '스트림', '스트림 보기', '스트림의 꼬리', '스트림에 ( ) 적용' 블록과 같은 특수 블록을 사용하여 완전하고 무한한 피보나치 수열을 만들 수 있게 해준다.

다른 특수 목적을 위한 라이브러리로는 '리스트 유틸리티', '단어, 문장', '반복', '애니메이션', '빈도 분포', '오디오 계산', '막대 차트', '세계 지도', '색상 및 크레용', '문자열 및 여러 줄 입력', '병렬화' 라이브러리 등이 있다.

6. 한계

스냅! 소프트웨어 자체에는 제약이 거의 없지만, 몇 가지 제한 사항이 있다.


  • 네이티브 클라우드 변수가 없다.
  • 업로드 파일 크기가 10 메가바이트로 제한된다. (Snap''!'' 클라우드 전용)
  • 프로젝트를 로드할 때 사용자가 수동으로 자바스크립트를 활성화해야 한다.

7. 역사

웹 기반의 스냅!(Snap!)과 이전의 데스크톱 기반 BYOB는 모두 옌스 뫼니히(Jens Mönig)가 윈도우, OS X 및 리눅스[4]용으로 개발했으며, 캘리포니아 대학교 버클리의 브라이언 하비[5]가 디자인 아이디어와 문서를 제공하여 비전공 학생들을 위한 컴퓨터 과학 (CS) 입문 과정인 "컴퓨팅의 아름다움과 즐거움"을 가르치는 데 사용되었다.[6] 옌스는 ''Snap!''을 만들기 전에 스크래치 팀의 일원이었다.[7] BYOB는 여전히 다운로드할 수 있다.

8. 라이선스

스냅!의 소스 코드는 GNU 아페로 일반 공중 사용 허가서(AGPL)를 따르며, GitHub에 호스팅되어 있다.[8] 이전의 데스크톱 기반 3.x 버전의 코드는 비상업적 용도로만 수정할 수 있는 라이선스로 제공되며, UC 버클리 웹사이트[9] 또는 CNET의 download.com, TechTracker 다운로드 페이지에서 내려받을 수 있다.[10][11]

9. 플랫폼

윈도우, iOS, macOS 및 리눅스 장치의 주요 웹 브라우저에서 실행된다.

지원되는 웹 브라우저는 다음과 같다.

10. 구현

스냅!(Snap!)은 Morphic.js[12]를 기반으로 구축되었으며, HTML5 캔버스 응용 프로그래밍 인터페이스(API)를 사용하는 등 기술적인 구현 방식을 가지고 있다. Morphic.js는 스냅! 자체와 '순수한' JavaScript 사이의 '중간 계층' 역할을 하는 Morphic GUI이다.

스냅!(Snap!)에서 보이는 모든 것은 모프(morph) 자체이다. 모든 버튼, 슬라이더, 대화 상자, 메뉴, 입력 필드, 텍스트 렌더링, 깜박이는 커서 등은 HTML DOM 요소를 사용하는 대신 morphic.js로 생성된다. 스냅!(Snap!)은 스프라이트의 모양을 캐시하므로 마우스가 경계 상자 위로 이동할 때마다 스프라이트를 새 캔버스 요소에 다시 그릴 필요가 없다. 그러나 블록은 캐시하지 않는다. 대신 모픽 "구멍" 메커니즘을 통해 C자형 블록의 내부를 관리한다.

모든 사용자 상호 작용은 이벤트에 의해 트리거되며, 이벤트는 루트 요소 "the world"에서 하위 모프로 전달된다. 모프를 드롭하면 새로운 '소유자'( '상위') 모프에 포함된다. Morphic에서 애니메이션을 실행하는 방법은 월드(World)의 애니메이션 대기열에 추가하여 월드에 등록하는 것이다. 월드는 Morphic 스테핑 메커니즘과 독립적으로 각 등록된 애니메이션을 디스플레이 주기당 한 번씩 단계를 밟는다.

11. 평가

스냅!(Snap!)은 (Logo Foundation)의 인정을 받았으며,[13] 프로그래머를 위한 온라인 잡지에서 리뷰되었다.[14] 2014년 12월 기준으로 뉴욕시(NYC) 고등학교 100곳에서 캘리포니아 대학교 버클리(University of California, Berkeley)의 “컴퓨팅의 아름다움과 즐거움(Beauty and Joy of Computing)”을 스냅!(Snap!)을 사용하여 새로운 AP 컴퓨터 과학 원리 과정으로 도입했다.[15] 옌스(Jens)와 브라이언(Brian)은 스냅!(Snap!)을 기반으로 한 평생 업적을 인정받아 2020년 국립 기술 리더십 정상 회담(NTLS) 교육 리더십 상을 수상했다.

참조

[1] 웹사이트 jmoenig/Snap https://github.com/j[...] 2024-05-17
[2] 웹사이트 morphic.js https://github.com/j[...] 2023-06-07
[3] 웹사이트 morphic.js https://github.com/j[...] 2023-06-07
[4] 웹사이트 Scratch - Imagine, Program, Share http://scratch.mit.e[...] 2017-05-21
[5] 웹사이트 HomePage for Brian Harvey (bh@cs.Berkeley.EDU) https://people.eecs.[...] 2019-01-19
[6] 웹사이트 UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011 http://inst.eecs.ber[...] 2017-05-21
[7] 웹사이트 Relationship With the Scratch Team - Politics - Snap! Forums https://forum.snap.b[...]
[8] 웹사이트 jmoenig/Snap https://github.com/j[...] 2017-05-21
[9] 웹사이트 Snap! (Build Your Own Blocks) 4.0 http://snap.berkeley[...] 2017-05-21
[10] 웹사이트 BYOB for Windows http://download.cnet[...] CNET Download.com and CNET TechTracker's
[11] 웹사이트 BYOB for Mac http://download.cnet[...] CNET's Download.com and TechTracker
[12] 웹사이트 morphic.js https://github.com/j[...] 2023-06-07
[13] 웹사이트 Logo History http://el.media.mit.[...] 2017-05-21
[14] 웹사이트 Visual Language Snap! Version 4.0 Released http://www.i-program[...] 2017-05-21
[15] 웹사이트 FACT SHEET: New Commitments to Support Computer Science Education https://obamawhiteho[...] 2019-01-20
[16] 웹인용 jmoenig/Snap https://github.com/j[...] 2022-06-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com